package main.java.middle;

import java.util.HashMap;
import java.util.Map;

/**
 * @Author: 郑国荣
 * @Date: 2023-08-17-15:03
 * @Description:
 */
public class LongestPalindrome {

    public static String longestPalindrome1(String s){
        if (s==null||s.isEmpty()) return null;
        if (s.length()==1) return s;
        int maxLen=0; //最长回文长度
        String pal = null;
        String currentChar =null;
        for (int i = 0; i < s.length()-1; i++) {
            int l1 = expandAroundCenter(s, i, i);
            int l2 = expandAroundCenter(s, i, i + 1);
            int len = Math.max(l1,l2);
            if (len>maxLen){
                currentChar = s.substring(i-(len-1)/2,i+len/2+1);
                maxLen = len;
            }
        }
        return currentChar;

    }
//    public static String longestPalindrome(String s){
//        if (s==null||s.isEmpty()) return null;
//        if (s.length()==1) return s;
//
//        HashMap<Character, Integer> map = new HashMap<>();
//        int maxLen=0; //最长回文长度
//        String pal = null;
//        for (int i = 0; i < s.length(); i++) {
//            Character temp = s.charAt(i);
//            if (map.containsKey(temp)){
//                int index=map.get(temp);
//                //找到最小回文
//                if (index+2 == i ){
//                    String get = expandAroundCenter(s,index,i);
//                    int currentLen = get.length();
//                    if (currentLen>maxLen){
//                        maxLen = currentLen;
//                        pal = get;
//                    }
//                }
//                if (index+1 == i ){
//                    String get = expandAroundCenter(s,index,i);
//                    int currentLen = get.length();
//                    if (currentLen>maxLen){
//                        maxLen = currentLen;
//                        pal = get;
//                    }
//                }
//
//
//            }
//
//            map.put(temp,i);
//        }
//        if (maxLen==0) return String.valueOf(s.charAt(0));
//        return pal;
//    }

    //找到最中心回文后，进行扩展
    public static int  expandAroundCenter(String s, int left, int right) {
        while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
            left--;
            right++;
        }
        System.out.println(right-left-1);
        System.out.println(s.charAt(left+1) + " " + s.charAt(right-1));
/*        StringBuilder stringBuilder = new StringBuilder();
        for (int i = left + 1; i < right; i++) {
            stringBuilder.append(s.charAt(i));
        }*/
        return right-left-1;
    }


    public static void main(String[] args) {
        String s = "aaa";
        System.out.println(longestPalindrome1(s));
    }
}
